import wx from 'weixin-js-sdk'
import { getJsApiSignature } from '@/api/wx'

// export const initShare = (shareTitle, shareLink, shareImgUrl, shareDesc) => {
//   getJsApiSignature({ url: window.location.href.split('#')[0] }).then(response => {
//     // 判断是否是成功请求
//     if (response.data.code === 0) {
//       let data = response.data.data
//       wx.config({
//         debug: false, // 开启调试模式
//         appId: data.appId, // 必填，公众号的唯一标识
//         timestamp: data.timestamp, // 必填，生成签名的时间戳
//         nonceStr: data.nonceStr, // 必填，生成签名的随机串
//         signature: data.signature, // 必填，签名，见附录1
//         jsApiList: ['onMenuShareQQ', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareTimeline'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
//       })
//       wx.ready((res) => {
//         wx.onMenuShareQZone({
//           title: shareTitle, // 分享标题
//           desc: shareDesc, // 分享描述
//           link: shareLink, // 分享链接
//           imgUrl: shareImgUrl, // 分享图标
//           success: function () {
//             // 用户确认分享后执行的回调函数
//             console.log('分享成功')
//           },
//           cancel: function () {
//             // 用户取消分享后执行的回调函数
//             console.log('分享成功')
//           }
//         })
//         wx.onMenuShareWeibo({
//           title: shareTitle, // 分享标题
//           desc: shareDesc, // 分享描述
//           link: shareLink, // 分享链接
//           imgUrl: shareImgUrl, // 分享图标
//           success: function () {
//             // 用户确认分享后执行的回调函数
//             console.log('分享成功')
//           },
//           cancel: function () {
//             // 用户取消分享后执行的回调函数
//             console.log('分享成功')
//           }
//         })
//         wx.onMenuShareTimeline({
//           title: shareTitle, // 分享标题
//           link: shareLink, // 分享链接
//           imgUrl: shareImgUrl, // 分享图标
//           success: function () {
//             // 用户点击了分享后执行的回调函数
//             console.log('分享成功')
//           }
//         })
//         wx.onMenuShareAppMessage({
//           title: shareTitle, // 分享标题
//           desc: shareDesc, // 分享描述
//           link: shareLink, // 分享链接
//           imgUrl: shareImgUrl, // 分享图标
//           success () {
//             // 用户成功分享后执行的回调函数
//             console.log('分享成功')
//           },
//           cancel () {
//             // 用户取消分享后执行的回调函数
//             console.log('分享失败')
//           }
//         })
//         wx.onMenuShareQQ({
//           title: shareTitle, // 分享标题
//           desc: shareDesc, // 分享描述
//           link: shareLink, // 分享链接
//           imgUrl: shareImgUrl, // 分享图标
//           success: function () {
//             // 用户确认分享后执行的回调函数
//             console.log('分享成功')
//           },
//           cancel: function () {
//             // 用户取消分享后执行的回调函数
//             console.log('分享成功')
//           }
//         })
//       })
//     } else {
//       this.$notify({
//         title: '来自远程服务器的提示',
//         message: '非常抱歉，服务器生病了，可能会出现分享失败问题，管理员正在帮它治病，请耐心等候~',
//         type: 'error'
//       })
//     }
//   })
// }

const wxShareApi = {
  /**
  * [wxRegister 微信Api初始化]
  * @param  {Function} callback [ready回调函数]
  */
  wxRegister (callback) {
    getJsApiSignature({ url: window.location.href.split('#')[0] }).then(response => {
      // 判断是否是成功请求
      if (response.data.code === 200) {
        let data = response.data.data
        wx.config({
          debug: false, // 开启调试模式
          appId: data.appId, // 必填，公众号的唯一标识
          timestamp: data.timestamp, // 必填，生成签名的时间戳
          nonceStr: data.nonceStr, // 必填，生成签名的随机串
          signature: data.signature, // 必填，签名，见附录1
          jsApiList: ['onMenuShareQQ', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareWeibo', 'onMenuShareQZone'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
        })
        wx.ready((res) => {
          // 如果需要定制ready回调方法
          if (callback) {
            callback()
          }
        })
        wx.error((res) => {
          console.log('js-sdk初始化失败，原因：' + JSON.stringify(res))
        })
      } else {
        this.$notify({
          title: '来自远程服务器的提示',
          message: '非常抱歉，服务器生病了，可能会出现分享失败问题，管理员正在帮它治病，请耐心等候~',
          type: 'error'
        })
      }
    })
  },
  /**
  * [shareTimeline 微信分享到朋友圈]
  * @param {[type]} option [分享信息]
  * @param {[type]} success [成功回调]
  * @param {[type]} error   [失败回调]
  */
  shareTimeline (option) {
    wx.onMenuShareTimeline({
      title: option.title, // 分享标题
      link: option.link, // 分享链接
      imgUrl: option.imgUrl, // 分享图标
      success: function () {
        // 用户确认分享后执行的回调函数
        option.success()
      }
    })
  },
  /**
  * [shareAppMessage 微信分享给朋友]
  * @param {[type]} option [分享信息]
  * @param {[type]} success [成功回调]
  * @param {[type]} error   [失败回调]
  */
  shareAppMessage (option) {
    wx.onMenuShareAppMessage({
      title: option.title, // 分享标题
      desc: option.desc, // 分享描述
      link: option.link, // 分享链接
      imgUrl: option.imgUrl, // 分享图标
      success: function () {
        // 用户确认分享后执行的回调函数
        option.success()
      }
    })
  },
  /**
  * [shareQQ 微信分享到QQ]
  * @param {[type]} option [分享信息]
  * @param {[type]} success [成功回调]
  * @param {[type]} error   [失败回调]
  */
  shareQQ (option) {
    wx.onMenuShareQQ({
      title: option.title, // 分享标题
      desc: option.desc, // 分享描述
      link: option.link, // 分享链接
      imgUrl: option.imgUrl, // 分享图标
      success: function () {
        // 用户确认分享后执行的回调函数
        option.success()
      },
      cancel: function () {
        // 用户取消分享后执行的回调函数
        option.error()
      }
    })
  },
  /**
  * [shareWeibo 微信分享到腾讯微博]
  * @param {[type]} option [分享信息]
  * @param {[type]} success [成功回调]
  * @param {[type]} error   [失败回调]
  */
  shareWeibo (option) {
    wx.onMenuShareWeibo({
      title: option.title, // 分享标题
      desc: option.desc, // 分享描述
      link: option.link, // 分享链接
      imgUrl: option.imgUrl, // 分享图标
      success: function () {
        // 用户确认分享后执行的回调函数
        option.success()
      },
      cancel: function () {
        // 用户取消分享后执行的回调函数
        option.error()
      }
    })
  },
  /**
  * [shareQZone 微信分享到QQ空间]
  * @param {[type]} option [分享信息]
  * @param {[type]} success [成功回调]
  * @param {[type]} error   [失败回调]
  */
  shareQZone (option) {
    wx.onMenuShareQZone({
      title: option.title, // 分享标题
      desc: option.desc, // 分享描述
      link: option.link, // 分享链接
      imgUrl: option.imgUrl, // 分享图标
      success: function () {
        // 用户确认分享后执行的回调函数
        option.success()
      },
      cancel: function () {
        // 用户取消分享后执行的回调函数
        option.error()
      }
    })
  }
}

export {wxShareApi}
